import _ from 'lodash'

const util = {
  debounce: _.debounce,
  set: _.set,
  get: _.get
}

/**
 * 解析json schema 生成一个可用的表单数据
 * 如果没有value或者default 的值将会被解析成 null
 * @param schema
 * @returns {{}}
 */
const parseSchema = (schema) => {
  const dataForm = {}
  const generateElement = (node, key = '') => {
    switch (node.type) {
      case 'object':
        if (key) util.set(dataForm, key, {})
        for (const item in node.properties) {
          const tmp = key ? (key + '.' + item) : item
          generateElement(node.properties[item], tmp)
        }
        break
      case 'array':
      case 'array-table':
      case 'array-tabs':
      case 'array-card':
        if (key) util.set(self.dataForm, key, [])
        for (const item in node.items) {
          const tmp = key ? (key + '.0.' + item) : item
          generateElement(node.items[item], tmp)
        }
        break
      default:
        util.set(dataForm, key, node.default !== undefined ? node.default : '')
        // util.set(dataForm, key, node.default !== undefined ? node.default : null)
    }
  }
  generateElement(schema)
  return dataForm
}

export default {
  ...util,
  parseSchema
}
